/*定时任务：
    注意：1、spring的@Scheduled注解 ，需要写在实现上。
         2、定时器的任务方法不能有返回值（如果有返回值，spring初始化的时候会告诉你有个错误，
         需要设定一个proxytargetclass的某个值为true）
         3、实现类上要有组件的注解@Component
    CRON表达式    含义
        "0/5 * * * * ?"         每5秒执行一次
        "0 0 12 * * ?"          每天中午十二点触发
        "0 15 10 ? * *"         每天早上10：15触发
        "0 15 10 * * ?"         每天早上10：15触发
        "0 15 10 * * ? *"       每天早上10：15触发
        "0 15 10 * * ? 2005"    2005年的每天早上10：15触发
        "0 * 14 * * ?"          每天从下午2点开始到2点59分每分钟一次触发
        "0 0/5 14 * * ?"        每天从下午2点开始到2：55分结束每5分钟一次触发
        "0 0/5 14,18 * * ?"     每天的下午2点至2：55和6点至6点55分两个时间段内每5分钟一次触发
        "0 0-5 14 * * ?"        每天14:00至14:05每分钟一次触发
        "0 10,44 14 ? 3 WED"    三月的每周三的14：10和14：44触发
        "0 15 10 ? * MON-FRI"   每个周一、周二、周三、周四、周五的10：15触发
 */
package com.trade.common.scheduler;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * Class Description: 定时任务实现类
 *
 * @Version v1.0 2017/9/16 23:56
 * @JDK version 1.8.0_51
 * @Author zfb
 */
@Component
public class ScheduledTasks {

    private static final SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");

    /**
     * @Scheduled(参数)：参数说明
     * fixedRate = 5000 ：上一次开始执行时间点之后5秒再执行
     * fixedDelay = 5000 ：上一次执行完毕时间点之后5秒再执行
     * initialDelay=1000, fixedRate=5000 ：第一次延迟1秒后执行，之后按fixedRate的规则每5秒执行一次
     */
    //cron="*/5 * * * * *" ：通过cron表达式定义规则
    //@Scheduled(cron = "0/5 * * * * ?")
    protected void reportCurrentTime(){
        System.out.println("现在时间："+sdf.format(new Date()));
    }
}

